import axios from 'axios'
//import Cookies from 'js-cookie'

const showStatus = (status) => {
    let message = ''
    switch (status) {
        case 400:
            message = '请求错误(400)'
            break
        case 401:
            message = '未授权，请重新登录(401)'
            break
        case 403:
            message = '拒绝访问(403)'
            break
        case 404:
            message = '请求出错(404)'
            break
        case 408:
            message = '请求超时(408)'
            break
        case 500:
            message = '服务器错误(500)'
            break
        case 501:
            message = '服务未实现(501)'
            break
        case 502:
            message = '网络错误(502)'
            break
        case 503:
            message = '服务不可用(503)'
            break
        case 504:
            message = '网络超时(504)'
            break
        case 505:
            message = 'HTTP版本不受支持(505)'
            break
        default:
            message = `连接出错(${status})!`
    }
    return `${message}，请检查网络或联系管理员！`
}

const service = axios.create({
    // 联调
    method: 'get',
    baseURL: process.env.VUE_APP_API,
    headers: {
        'Content-Type': 'application/json;charset=utf-8'
    },
    timeout: 30000
})
// 请求拦截器
service.interceptors.request.use((config) => {
   
    return config
}, (error) => {
    // 错误抛到业务代码
   
    return Promise.resolve(error)
})

// 响应拦截器
service.interceptors.response.use((response) => {
    const status = response.status
  
    if (status < 200 || status >= 300) {
        // 处理http错误，抛到业务代码
        return showStatus(status)
        
    }

    
    return response.data
}, (error) => {
    // 错误根据需要抛到业务代码
   
    return Promise.resolve(error)
})
const $http = (options) => {
    if (!options.data) { options.data = {} }
    if (options.method === 'get') {
        options.params = options.data
    }
    return service(options)
}
export default $http